package com.demo.java.OD201_250.OD242;

import java.util.HashSet;
import java.util.Scanner;
import java.util.Set;

/**
 * @author bug菌
 * @Source 公众号：猿圈奇妙屋
 * @des： 【乘积最大值 or 无重复字符乘机最大值】问题
 * @url： https://blog.csdn.net/weixin_43970743/article/details/145960393
 */
public class OdMain {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        // 输入字符串
        String inputString = scanner.nextLine();

        // 如果输入为空，则直接返回0
        if (inputString.isEmpty()) {
            System.out.println(0);
            return;
        }

        // 将输入字符串按照逗号分割为若干个单词
        String[] words = inputString.split(",");

        int maxWordLengthProduct = 0; // 记录最大长度乘积
        Set<Character> uniqueCharsInWord1 = new HashSet<>(); // 用来存储第一个单词的字符

        // 遍历所有的单词对，找到它们的长度乘积的最大值
        for (int i = 0; i < words.length - 1; i++) {
            char[] word1 = words[i].toCharArray();
            uniqueCharsInWord1.clear();  // 清空集合

            // 将第一个单词中的所有字符添加到集合中
            for (char charInWord1 : word1) {
                uniqueCharsInWord1.add(charInWord1);
            }

            // 对于第二个单词，检查它是否与第一个单词有重复字符
            for (int j = i + 1; j < words.length; j++) {
                char[] word2 = words[j].toCharArray();
                boolean flag = true; // 标记是否没有重复字符

                // 检查第二个单词中的字符是否与第一个单词有重复
                for (char charInWord2 : word2) {
                    if (uniqueCharsInWord1.contains(charInWord2)) {
                        flag = false; // 如果有重复字符，标记为false
                        break;
                    }
                }

                // 如果两个单词没有重复字符，计算它们的长度乘积
                if (flag) {
                    int length = word1.length * word2.length;
                    maxWordLengthProduct = Math.max(maxWordLengthProduct, length); // 更新最大乘积
                }
            }
        }

        // 输出最大长度乘积
        System.out.println(maxWordLengthProduct);
    }
}